package com.xczz.model.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.sql.Timestamp;
import java.util.Date;

@Data
public class SysRoleVO {
    /**
     * 角色ID
     */

    private Long roleId;

    /**
     * 角色名称
     */
    private String roleName;

    /**
     * 角色权限标识（如 admin/user）
     */
    private String roleKey;

    /**
     * 角色排序
     */
    private Integer roleSort;

    /**
     * 数据范围（如 1-全部权限，2-自定义）
     */
    private String dataScope;

    /**
     * 角色状态（0-正常，1-停用）
     */
    private String status;

    /**
     * 创建人
     */
    private String createBy;

    /**
     * 创建时间（格式化为更通用的 Date 类型）
     */
    private Timestamp createTime;

    /**
     * 更新人
     */
    private String updateBy;

    /**
     * 更新时间（格式化为更通用的 Date 类型）
     */
    private Timestamp updateTime;

    /**
     * 备注
     */
    private String remark;

    private boolean admin; // 标识是否是管理员角色
    private Long[] menuIds;
    public boolean isAdmin() {
        // 方式1：检查角色ID是否为1（通常1是管理员ID）
        return roleId != null && roleId == 1L;

        // 或方式2：检查角色标识符是否为"admin"
        // return "admin".equals(this.roleKey);
    }

    // 无参构造函数
    public SysRoleVO() {
    }

    // 根据roleId构造的构造函数（用于deleteRoleByIds方法中的checkRoleAllowed检查）
    public SysRoleVO(Long roleId) {
        this.roleId = roleId;
        // 通常管理员角色的ID是固定的（如1L）
        this.admin = (roleId != null && roleId == 1L);
    }

    // 完整构造函数
    public SysRoleVO(Long roleId, String roleName, String roleKey, boolean admin) {
        this.roleId = roleId;
        this.roleName = roleName;
        this.roleKey = roleKey;
        this.admin = admin;
    }
}